package com.farm.configer.form;

import java.util.List;
import java.util.Map;

import org.springframework.web.servlet.ModelAndView;

import com.farm.configer.domain.Configerform;
import com.farm.configer.domain.ex.ConfigerMetaPara;

public interface FormModel {

	/**
	 * 生成表单页面URL
	 * 
	 * @return
	 */
	public String getFormPageUrl();

	/**
	 * 表单提交页面URL
	 * 
	 * @return
	 */
	public String getFormPageSubmitUrl();

	/**
	 * 构造表单jsp页面
	 * 
	 * @param testParaList 在向导表单测试时，从界面传入的上下文参数（模拟项目实例上下文）
	 * @param configer     传入jsp参数（在jsp页面构造时要用到的参数，一般为项目实例上下文中绑定到当前表单的参数）
	 * @return
	 */
	public ModelAndView getFormPageModelAndView(List<ConfigerMetaPara> testParaList, Object jspConfiger);

	/**
	 * 提交保存表单参数
	 * 
	 * @param paraList  用戶通过向导界面提交的表单参数
	 * @return 要存储到项目实例上下文的参数
	 */
	public Map<String, Object> submitForm(List<ConfigerMetaPara> paraList);

	/**
	 * 获得模型预置表单
	 * 
	 * @return
	 */
	public List<Configerform> getForms();

}
